package com.vip8.recorder.service.utils;

import java.util.*;

public class CollectionUtil {

    /**
     * 判断集合是否为空
     *
     * @param target
     * @return
     */
    public static <T> boolean isEmpty(Collection<T> target) {
        if (target == null || target.isEmpty()) {
            return true;
        }
        return false;
    }

    /**
     * 判断集合是否不为空
     *
     * @param target
     * @return
     */
    public static <T> boolean isNotEmpty(Collection<T> target) {
        return !isEmpty(target);
    }

    /**
     * 判断集合是否为空
     *
     * @param target
     * @return
     */
    public static <K, V> boolean isEmpty(Map<K, V> target) {
        if (target == null || target.isEmpty()) {
            return true;
        }
        return false;
    }

    /**
     * 判断集合是否不为空
     *
     * @param target
     * @return
     */
    public static <K, V> boolean isNotEmpty(Map<K, V> target) {
        return !isEmpty(target);
    }


    /**
     * 对map里的value进行排序
     * @param map
     * @param type 0:正序；1：倒序
     * @return
     */
    public static Map<String, Integer> sortMap(Map<String, Integer> map, int type) {
        //利用Map的entrySet方法，转化为list进行排序
        List<Map.Entry<String, Integer>> entryList = new ArrayList<>(map.entrySet());
        //利用Collections的sort方法对list排序
        Collections.sort(entryList, new Comparator<Map.Entry<String, Integer>>() {
            @Override
            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
                if(type == 1){
                    return o2.getValue() - o1.getValue();
                }
                //正序排列，倒序反过来
                return o1.getValue() - o2.getValue();
            }
        });
        //遍历排序好的list，一定要放进LinkedHashMap，因为只有LinkedHashMap是根据插入顺序进行存储
        LinkedHashMap<String, Integer> linkedHashMap = new LinkedHashMap<String, Integer>();
        for (Map.Entry<String,Integer> e : entryList
        ) {
            linkedHashMap.put(e.getKey(),e.getValue());
        }
        return linkedHashMap;
    }

}
